﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using QLNhaSach.BUS;
using QLNhaSach.BUS.DTO;

namespace QLNhaSach.GUI.NhanVienQuanLySach
{
    public partial class QuanLySach : Form
    {
        DataTable dt = new DataTable();
        int maSach;
        public QuanLySach()
        {
            InitializeComponent();
        }

        private void btnDong_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        #region Form load
        private void QuanLySach_Load(object sender, EventArgs e)
        {
            dt = NhanVienBanSachBUS.DSSach();
            lvDSSach.Items.Clear();
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                DataRow dr = dt.Rows[i];
                ListViewItem item = new ListViewItem();
                item.Text = dr["MaSach"].ToString();
                item.SubItems.Add(dr["TenSach"].ToString());
                item.SubItems.Add(dr["TenTG"].ToString());
                item.SubItems.Add(dr["TenNXB"].ToString());
                item.SubItems.Add(dr["TenTL"].ToString());
                item.SubItems.Add(dr["Gia"].ToString());
                lvDSSach.Items.Add(item);
            }

            cbNXB.Items.Clear();
            cbTacGia.Items.Clear();
            cbTheLoai.Items.Clear();

            DataTable dtTL = new DataTable();
            dtTL = NhanVienQuanLySachBUS.DSTheLoai();
            for (int i = 0; i < dtTL.Rows.Count; i++)
            {
                DataRow dr = dtTL.Rows[i];
                cbTheLoai.Items.Add(dr["TenTL"]);
            }

            DataTable dtTG = new DataTable();
            dtTG = NhanVienQuanLySachBUS.DSTacGia();
            for (int i = 0; i < dtTG.Rows.Count; i++)
            {
                DataRow dr = dtTG.Rows[i];
                cbTacGia.Items.Add(dr["TenTG"]);
            }

            DataTable dtNXB = new DataTable();
            dtNXB = NhanVienQuanLySachBUS.DSNXB();
            for (int i = 0; i < dtNXB.Rows.Count; i++)
            {
                DataRow dr = dtNXB.Rows[i];
                cbNXB.Items.Add(dr["TenNXB"]);
            }            
        }
        #endregion

        #region Su kien click Listview
        private void lvDSSach_SelectedIndexChanged(object sender, EventArgs e)
        {           
            int index = lvDSSach.FocusedItem.Index;
            if (index != -1)
            {                
                DataRow dr = dt.Rows[index];
                txtTenSach.Text = dr["TenSach"].ToString();
                cbTheLoai.SelectedIndex = Convert.ToInt16(dr["tl.MaTL"]) - 1;
                cbTacGia.SelectedIndex = Convert.ToInt16(dr["tg.MaTG"]) - 1;
                cbNXB.SelectedIndex = Convert.ToInt16(dr["nxb.MaNXB"]) - 1;
                txtGia.Text = dr["Gia"].ToString();
                //txtSoLuong.Text = dr["Gia"].ToString();
                txtMoTa.Text = dr["MoTa"].ToString();

                maSach = Convert.ToInt16(dr["MaSach"]);
            }
        }
        #endregion

        #region Cap nhap thong tin sach
        private void btnCapNhap_Click(object sender, EventArgs e)
        {            
            SachDTO sch = new SachDTO();
            sch.MaSach = maSach;
            if (txtTenSach.Text == "")
            {
                MessageBox.Show("Vui lòng nhập tên sách");
                txtTenSach.Focus();
                return;
            }
            sch.TenSach = txtTenSach.Text;

            if (cbTheLoai.Text == "")
            {
                MessageBox.Show("Vui lòng chọn thể loại");
                cbTheLoai.Focus();
                return;
            }
            int temp = cbTheLoai.SelectedIndex + 1;
            sch.MaTL = temp; ;

            if (cbTacGia.Text == "")
            {
                MessageBox.Show("Vui lòng chọn tác giả");
                cbTacGia.Focus();
                return;
            }
            temp = cbTacGia.SelectedIndex + 1;
            sch.MaTG = temp;

            if (cbNXB.Text == "")
            {
                MessageBox.Show("Vui lòng chọn nhà xuất bản");
                cbNXB.Focus();
                return;
            }
            temp = cbNXB.SelectedIndex + 1;
            sch.MaNXB = temp;

            if (txtGia.Text == "")
            {
                MessageBox.Show("Vui lòng nhập giá bán");
                txtGia.Focus();
                return;
            }
            double temp1;
            if (double.TryParse(txtGia.Text, out temp1) == false)
            {
                MessageBox.Show("Giá sách là kiểu số");
                txtGia.Text = "";
                txtGia.Focus();
                return;
            }
            sch.Gia = Convert.ToDouble(txtGia.Text);

            //if (txtSoLuong.Text == "")
            //{
            //    MessageBox.Show("Vui lòng nhập giá bán");
            //    txtGia.Focus();
            //    return;
            //}

            if (txtMoTa.Text == "")
            {
                MessageBox.Show("Vui lòng ghi mô tả khái quát cuốn sách này");
                txtMoTa.Focus();
                return;
            }
            sch.MoTa = txtMoTa.Text;

            if (NhanVienQuanLySachBUS.CapNhatTTSach(sch) == NhanVienQuanLySachBUSResult.OK)
                MessageBox.Show("Cập nhập thông tin sách thành công");
            else
                MessageBox.Show("Cập nhập thông tin sách thất bại");
            
            QuanLySach_Load(sender, e);
        }
        #endregion

        #region Xoa truong
        private void btnHuy_Click(object sender, EventArgs e)
        {
            txtTenSach.Text = "";            
            txtGia.Text = "";
            txtSoLuong.Text = "";
            txtMoTa.Text = "";
            txtTenSach.Focus();
            cbTheLoai.Text = "";
            cbTacGia.Text = "";
            cbNXB.Text = "";
            QuanLySach_Load(sender, e);
        }
        #endregion

        #region Them sach
        private void btnThem_Click(object sender, EventArgs e)
        {
            DataTable dttensach = new DataTable();
            dttensach = NhanVienQuanLySachBUS.KiemTraTenSach(txtTenSach.Text);
            if (dttensach.Rows.Count >= 1)
            {
                MessageBox.Show("Tên sách đã tồn tại");
                txtTenSach.Text = "";
                txtTenSach.Focus();
                return;
            }
            SachDTO sch = new SachDTO();
            if (txtTenSach.Text == "")
            {
                MessageBox.Show("Vui lòng nhập tên sách");
                txtTenSach.Focus();
                return;
            }
            sch.TenSach = txtTenSach.Text;

            if (cbTheLoai.Text == "")
            {
                MessageBox.Show("Vui lòng chọn thể loại");
                cbTheLoai.Focus();
                return;
            }
            int temp = cbTheLoai.SelectedIndex + 1;
            sch.MaTL = temp; ;

            if (cbTacGia.Text == "")
            {
                MessageBox.Show("Vui lòng chọn tác giả");
                cbTacGia.Focus();
                return;
            }
            temp = cbTacGia.SelectedIndex + 1;
            sch.MaTG = temp;

            if (cbNXB.Text == "")
            {
                MessageBox.Show("Vui lòng chọn nhà xuất bản");
                cbNXB.Focus();
                return;
            }
            temp = cbNXB.SelectedIndex + 1;
            sch.MaNXB = temp;

            if (txtGia.Text == "")
            {
                MessageBox.Show("Vui lòng nhập giá bán");
                txtGia.Focus();
                return;
            }
            double temp2;
            if (double.TryParse(txtGia.Text,out temp2) == false)
            {
                MessageBox.Show("Giá sách là kiểu số");
                txtGia.Text = "";
                txtGia.Focus();
                return;
            }
            sch.Gia = Convert.ToDouble(txtGia.Text);

            if (txtSoLuong.Text == "")
            {
                MessageBox.Show("Vui lòng nhập số lượng");
                txtSoLuong.Focus();
                return;
            }
            int temp1;            
            if (int.TryParse(txtSoLuong.Text, out temp1) == false)
            {
                MessageBox.Show("Số lượng sách nhập là kiểu số");
                txtSoLuong.Text = "";
                txtSoLuong.Focus();
                return;
            }
            sch.SoLuongNhap = Convert.ToInt16(txtSoLuong.Text);

            if (txtMoTa.Text == "")
            {
                MessageBox.Show("Vui lòng ghi mô tả khái quát cuốn sách này");
                txtMoTa.Focus();
                return;
            }
            
            sch.MoTa = txtMoTa.Text;

            if (NhanVienQuanLySachBUS.ThemSach(sch) == NhanVienQuanLySachBUSResult.OK)
            {
                MessageBox.Show("Thêm sách thành công");
            }
            else
                MessageBox.Show("Thêm sách thất bại");

            QuanLySach_Load(sender, e);
        }
        #endregion
    }
}